package com.br.egaragens.helpers;


import android.R.integer;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.br.egaragens.entidades.Convenio;
import com.br.egaragens.entidades.Empresa;
import com.br.egaragens.entidades.Usuario;
import com.br.egaragens.entidades.Veiculo;
import com.br.egaragens.interfaces.IEntidade;
import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;

import java.sql.SQLException;

public class DataBaseHelperPadrao extends OrmLiteSqliteOpenHelper {

	public static String DATABASE_NAME = "forcavendadb.db";
	protected static int DATABASE_VERSION = 15;
	protected Dao<Veiculo, integer> veiculoDao;
	protected Dao<Empresa, integer> empresaDao;
	protected Dao<Usuario, integer> usuarioDao;
	protected Dao<Convenio, integer> convenioDao;
	
	
	public DataBaseHelperPadrao(Context context) {
		super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
		// TODO Auto-generated method stub
		try {
			TableUtils.createTable(connectionSource, Veiculo.class);
			TableUtils.createTable(connectionSource, Empresa.class);
			TableUtils.createTable(connectionSource, Usuario.class);
			TableUtils.createTable(connectionSource, Convenio.class);
		
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void onUpgrade(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource, int arg2,	int arg3) {
		
		try {
			TableUtils.dropTable(connectionSource, Veiculo.class, true);
			TableUtils.dropTable(connectionSource, Empresa.class, true);
			TableUtils.dropTable(connectionSource, Usuario.class, true);
			TableUtils.dropTable(connectionSource, Convenio.class, true);
			
			super.onCreate(sqliteDatabase);
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
	
	public void limparTabelaCarro() {
		try {
			TableUtils.clearTable(getConnectionSource(), Veiculo.class);
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	public void limparTabelaEmpresa() {
		try {
			TableUtils.clearTable(getConnectionSource(), Empresa.class);
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	public void limparTabelaUsuario() {
		try {
			TableUtils.clearTable(getConnectionSource(), Usuario.class);
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	public void limparTabelaConvenio() {
		try {
			TableUtils.clearTable(getConnectionSource(), Convenio.class);
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	

	public Dao<Veiculo, integer> getVeiculoDao() throws SQLException {
		if(veiculoDao == null){
			veiculoDao = getDao(Veiculo.class);
		}
		return veiculoDao;
	}
	public Dao<Empresa, integer> getEmpresa() throws SQLException {
		if(empresaDao == null){
			empresaDao = getDao(Empresa.class);
		}
		return empresaDao;
	}
	public Dao<Usuario, integer> getUsuario() throws SQLException {
		if(usuarioDao == null){
			usuarioDao = getDao(Usuario.class);
		}
		return usuarioDao;
	}
	
	public Dao<Convenio, integer> getConvenio() throws SQLException {
		if(convenioDao == null){
			convenioDao = getDao(Convenio.class);
		}
		return convenioDao;
	}
	
	
}
